package gui;
import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;

import javax.imageio.ImageIO;
public class ImagenDinamica extends Imagen{




	        private Image original;
	        private int [][] secuenciaOriginal;
	        private int [][] secuenciaOriginalDos;
	        private int secuencia;
	        private int x;
	        private int y;
	        boolean enc=false;
	        
	        public ImagenDinamica (String ruta,int xOriginal, int yOriginal, int xActual, int yActual){
	                try {
	                        super.setImagen(ImageIO.read (getClass().getClassLoader().getResource(ruta)));
	                        original = ImageIO.read (getClass().getClassLoader().getResource(ruta));
	                } catch (IOException e) {
	                        // TODO Auto-generated catch block
	                        e.printStackTrace();
	                }
	                super.setXOriginal(xOriginal);
	                super.setYOriginal(yOriginal);
	                super.setXActual(xActual);
	                super.setYActual(yActual);
	        }
	        
	        public ImagenDinamica (String ruta,int xOriginal, int yOriginal, int xActual, int yActual,int x, int y,int [][]movimiento){
	            try {
	                    super.setImagen(ImageIO.read (getClass().getClassLoader().getResource(ruta)));
	                    original = ImageIO.read (getClass().getClassLoader().getResource(ruta));
	            } catch (IOException e) {
	                    // TODO Auto-generated catch block
	                    e.printStackTrace();
	            }
	            super.setXOriginal(xOriginal);
	            super.setYOriginal(yOriginal);
	            super.setXActual(xActual);
	            super.setYActual(yActual);
	            System.out.println("X actual vale "+xActual+" e Y "+yActual);
	            System.out.println("X actual con get vale "+super.getXActual()+" e Y "+super.getYActual());
	            this.secuenciaOriginal=movimiento;
	            this.x=x;
	            
	            for(int i=0;i<secuenciaOriginal.length;i++){
	            	System.out.println("Vale "+secuenciaOriginal[i][0]+" "+secuenciaOriginal[i][1]+" e i"+i);
	            }
	            this.secuencia=0;
	            this.y=y;
	            super.setImagen(original.getScaledInstance(x, y, Image.SCALE_SMOOTH));
	    }
	        
	        @Override
	        public void actualizar(int xNueva, int yNueva) {
	                // TODO Auto-generated method stub
	                System.out.println("Se actualiza");
	                double x = new Double(xNueva)/new Double(super.getXOriginal());
	                double y = new Double(yNueva)/new Double(super.getYOriginal());
	                Image aux = super.getImagen();
	                super.setImagen(original.getScaledInstance((int) (Math.round(aux.getWidth(null)*x)),(int) (Math.round(aux.getHeight(null)*y)), Image.SCALE_SMOOTH));
	                super.setXOriginal(xNueva);
	                super.setYOriginal(yNueva);
	                System.out.println("El actual antes vale "+super.getXActual()+ " "+super.getYActual());
	                System.out.println("X vale "+x+" e Y vale "+y);
	                super.setXActual((int) (Math.round(super.getXActual()*x)));
	                
	                super.setYActual((int) (Math.round(super.getYActual()*y)));
	                System.out.println("El actual vale "+super.getXActual()+ " "+super.getYActual());
	                for(int i=0;i<secuenciaOriginal.length;i++){
	                	System.out.println("Antiguo valor x vale "+secuenciaOriginal[i][0]+"e y vale"+secuenciaOriginal[i][1]+" siendo i "+i);
	                	secuenciaOriginal[i][0]=(int) (Math.round(secuenciaOriginal[i][0]*x));
	                	secuenciaOriginal[i][1]=(int) (Math.round(secuenciaOriginal[i][1]*y));
	                	System.out.println("X vale "+x+" e Y vale "+y);
	                	System.out.println("Nuevo valor x vale "+secuenciaOriginal[i][0]+"e y vale"+secuenciaOriginal[i][1]+" siendo i "+i);
		        		
	                }
	                
	        }

	        @Override
	        public void pintar(Graphics g) {
	                // TODO Auto-generated method stub
	        	System.out.println("Va a pintar");
	                if(g != null){                   
	                	//System.out.println("Pinta");
	                	g.drawImage(super.getImagen(),super.getXActual(),super.getYActual(), null);
	                }
	        }
	        
	        public void moverSecuencia(){
	        	//System.out.println("Se deja caer bizcocho");
	        	boolean encontrado=false;
	        	int i=0;
	        	int j=0;
	        	if(secuencia<secuenciaOriginal.length){
	        		//System.out.println("El original x vale "+super.getXActual()+"e y vale"+super.getYActual());
	        		//System.out.println("La secuencia x vale "+secuenciaOriginal[i][0]+"e y vale"+secuenciaOriginal[i][1]);
	        		super.setXActual(secuenciaOriginal[secuencia][0]);
        			super.setYActual(secuenciaOriginal[secuencia][1]);
	        		/*if(secuenciaOriginal[i][0]==super.getXActual() &&secuenciaOriginal[i][1]==super.getYActual()){
	        			encontrado=true;
	        			System.out.println("Encontrado x vale "+super.getXActual()+"e y vale"+super.getYActual());
	        			if(i+1<secuenciaOriginal.length){
		        			super.setXActual(secuenciaOriginal[i+1][0]);
		        			super.setYActual(secuenciaOriginal[i+1][1]);
	        			}else{
	        				super.setXActual(secuenciaOriginal[0][0]);
		        			super.setYActual(secuenciaOriginal[0][1]);
	        				//System.out.println("SE ha cambiado");
	        				//if(!enc){
	        				////cambiarImagen("BizcochoConchocolateLleno.gif");
	        					//enc=true;
	        				//}else{
	        					
	        						//super.setXActual(secuenciaOriginal[0][0]);
			        			//super.setYActual(secuenciaOriginal[0][1]);
	        				//}
	        			}
	        		}else{
	        			i++;
	        		}*/
	        		secuencia++;
	        	}else{
	        		secuencia=0;
	        		super.setXActual(secuenciaOriginal[0][0]);
        			super.setYActual(secuenciaOriginal[0][1]);
        			secuencia++;
	        	}
	        	
	        }
	        
	        public Boolean getEncontrado(){
	        	return enc;
	        }
	        public void mover(int posicion){
	        	super.setXActual(posicion);
	        }
	        public void iniciar(){
	        	this.enc=false;
	        }
	        public void cambiarImagen(String nueva){
	        	try {
                    super.setImagen(ImageIO.read (getClass().getClassLoader().getResource(nueva)));
                    original = ImageIO.read (getClass().getClassLoader().getResource(nueva));
	            } catch (IOException e) {
	                    // TODO Auto-generated catch block
	                    e.printStackTrace();
	            }
	            
	            super.setImagen(original.getScaledInstance(x, y, Image.SCALE_SMOOTH));
	        }
}
